算法 面试题

算法 面试题

👹

0-235 有多少个 1 ?

1
2
3
4
5
6
7
8
num = 0
for items in range(236):

for item in str(items):
if item=='1':

num+=1
print(num)

解析:

循环从 0-235 ,因此需要填写 236 的范围

将 items 转成字符类型可以算是个数组

第二个 for 循环的 item 将检测 items 是否含有 1

如果有那么 num 将 +1

当 items 为 111 的时候相当于加了三次

改进一下👇

如果每个数字只允许出现一次呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
num = 0

b = True

for items in range(0,236):

for item in str(items):

if item=='1' and b:
num+=1
b=not b


print(items,item)
b=not b

print(num)

解析:

那么只需要加个布尔检测即可


  1. 字符串搜索
    1. 暴力算法
    2. hash算法
    3. BM算法 ⭐
      1. 坏字符规则
      2. 好字符规则
    4. KMP算法 ⭐
作者

发布于

2022-12-26

更新于

2023-07-07

许可协议